////https://www.luogu.com.cn/problem/P10471
//
//#include<iostream>
//
//using namespace std;
//
//const int N = 1e6 + 10;
//int tree[N * 32][2];
//int x[N];
//int idx;
//
//void insert(int x)
//{
//	int pos = 0;
//	for (int i = 31; i >= 0; i--)
//	{
//		int n = (x >> i) & 1;
//		if (tree[pos][n] == 0) tree[pos][n] = ++idx;
//		pos = tree[pos][n];
//	}
//}
//
//int find(int x)
//{
//	int ret = 0, pos = 0;
//	for (int i = 31; i >= 0; i--)
//	{
//		int n = (x >> i) & 1;
//		if (tree[pos][n ^ 1] == 0)
//		{
//			pos = tree[pos][n];
//			ret *= 2;
//		}
//		else 
//		{
//			ret = ret * 2 + 1;
//			pos = tree[pos][n ^ 1];
//		}
//	}
//	return ret;
//}
//
//int main()
//{
//	int n; cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> x[i];
//		insert(x[i]);
//	}
//	int ret = 0;
//	for (int i = 0; i < n; i++)
//		ret = max(ret, find(x[i]));
//	cout << ret << endl;
//	return 0;
//}